Transfer Money V1
The Unified Payment API serves as a single entry point for initiating real-time and fallback payments through multiple supported networks, including FedNow, TCH, and ACH. It abstracts the complexity of routing logic and network compatibility checks, allowing clients (such as mobile / middleware systems) to initiate payments with minimal integration effort.
Key Features:
Unified interface for multi-rail payments (FedNow, TCH, ACH)
Automatic routing based on beneficiary bank support
Built-in fallback mechanism if real-time networks are unavailable
Typical Use Case:
Client system (Mobile / Middleware) send a payment request to the XD Ledger via this API. The ledger then parses the request, determines the optimal payment rail, and processes the transaction end-to-end.
Method: POST
{{URL}}/jsonrpc
Headers
Name | Value |
---|---|
Content-Type | application/json |
Credential | Basic c3VwcG9ydCsxQG5ldHN5cy1pbmMuY29tOjM5ZDYxOGJkNTVmN5NWQxY2RlNDE5 |
Signature | {{signature}} |
Example
Payload Parameters
Parameter | Description |
---|---|
transactionAmount Mandatory | Object |
amount Mandatory | String Value of the transaction Example: "220" |
currency Mandatory | String Currency type used for the transaction Example: "USD" |
creditor Mandatory | Object |
userType Mandatory | String Specifies the type of creditor Example: "INDIVIDUAL" |
iIdentification Optional | String Unique identifier of the identification provided by creditor Example: "89900200002" |
identificationType Optional | String Type of identification Example: "SSN" |
firstName Mandatory | String First name of creditor Example: "TestUser" |
middleName Optional | String Middle name of creditor Example: "" |
lastName Optional | String Last name of creditor Example: "" |
creditorAccount Mandatory | Object |
identification Mandatory | String Account number of the creditor's account Example: "200522479517839" |
identificationType Mandatory | String Type of account identification Example: "ACCOUNT_NUMBER" |
identificationType2 Mandatory | String Type of account Example: "CHECKING" |
institution Mandatory | Object |
name Mandatory | String Name of the creditor bank Example: "THE BANK OF NEW YORK MELLON" |
identification Mandatory | String Bank's identification number Example: "101110802" |
identificationType Mandatory | String Identification type of bank Example: "ABA" |
debtorPostalAddress Optional | Object |
addressType Optional | String Type of address Example: "HOUSE" |
addressLine1 Optional | String First line of the address Example: "3745 SW anamaker RD" |
addressLine2 Optional | String Second line of the address Example: "Suite C" |
city Optional | String City of the debtor's address Example: "Topeka" |
state Optional | String State of the debtor's address Example: "KS" |
zipCode Optional | String Postal code of the debtor's address Example: "66610" |
countryCode Optional | String Country code in numeric form Example: "840" |
nationality Optional | String Nationality of the debtor Example: "USA" |
debtorContact Optional | Object |
primaryEmail Optional | String Primary email address for the debtor Example: "n.sundar@netsys-inc.com" |
primaryPhone Optional | String Primary phone number for the debtor Example: "7850010001" |
debtorAccount Mandatory | Object |
identification Mandatory | String Account number for the debtor's account Example: "200401278247450" |
identificationType Mandatory | String Type of account identification Example: "ACCOUNT_NUMBER" |
institution Mandatory | Object |
name Mandatory | String Name of debtor bank Example: "FINWISE BANK" |
identification Mandatory | String Bank's identification number Example: "124303298" |
identificationType Mandatory | String Type of bank identification Example: "ABA" |
- cURL
- C#
- Go
- NodeJs
curl --location --globoff --request GET '{{URL}}/jsonrpc' \
--header 'Content-Type: application/json' \
--data-raw '{"method":"TransactionService.Transfermoney","id":"1","params":{"payload":{"transactionAmount":{"amount":"220","currency":"USD"},"creditor":{"userType":"INDIVIDUAL","identification":"89900200002","identificationType":"SSN","firstName":"TestUser","middleName":"","lastName":""},"creditorAccount":{"identification":"200522479517839","identificationType":"ACCOUNT_NUMBER","identificationType2":"CHECKING","institution":{"name":"THE BANK OF NEW YORK MELLON","identification":"101110802","identificationType":"ABA"}},"debtorPostalAddress":{"addressType":"HOUSE","addressLine1":"3745 SW anamaker RD","addressLine2":"Suite C","city":"Topeka","state":"KS","zipCode":"66610","countryCode":"840","nationality":"USA"},"debtorContact":{"primaryEmail":"n.sundar@netsys-inc.com","primaryPhone":"7850010001"},"debtorAccount":{"identification":"200401278247450","identificationType":"ACCOUNT_NUMBER","institution":{"name":"FINWISE BANK","identification":"124303298","identificationType":"ABA"}}},"api":{"credential":"Basic amVnYW4uckBuZXR4ZC5jb206ZmE3NTg4NzYyMDUxNDRhM2FmZTRlMDJiNzIzOTM2M2E=","signature":"{{signature}}","apiKey":"fa758876205144a3afe4e02b7239363a","keyId":"41199"}}}'
var options = new RestClientOptions("{{URL}}/jsonrpc")
{
MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Get);
request.AddHeader("Content-Type", "application/json");
var body = @"{
" + "\n" +
@" ""method"": ""TransactionService.Transfermoney"",
" + "\n" +
@" ""id"": ""1"",
" + "\n" +
@" ""params"": {
" + "\n" +
@" ""payload"": {
" + "\n" +
@" ""transactionAmount"": {
" + "\n" +
@" ""amount"": ""220"",
" + "\n" +
@" ""currency"": ""USD""
" + "\n" +
@" },
" + "\n" +
@" ""creditor"": {
" + "\n" +
@" ""userType"": ""INDIVIDUAL"",
" + "\n" +
@" ""identification"": ""89900200002"",
" + "\n" +
@" ""identificationType"": ""SSN"",
" + "\n" +
@" ""firstName"": ""TestUser"",
" + "\n" +
@" ""middleName"": """",
" + "\n" +
@" ""lastName"": """"
" + "\n" +
@" },
" + "\n" +
@" ""creditorAccount"": {
" + "\n" +
@" ""identification"": ""200522479517839"",
" + "\n" +
@" ""identificationType"": ""ACCOUNT_NUMBER"",
" + "\n" +
@" ""identificationType2"": ""CHECKING"",
" + "\n" +
@" ""institution"": {
" + "\n" +
@" ""name"": ""THE BANK OF NEW YORK MELLON"",
" + "\n" +
@" ""identification"": ""101110802"",
" + "\n" +
@" ""identificationType"": ""ABA""
" + "\n" +
@" }
" + "\n" +
@" },
" + "\n" +
@" ""debtorPostalAddress"": {
" + "\n" +
@" ""addressType"": ""HOUSE"",
" + "\n" +
@" ""addressLine1"": ""3745 SW anamaker RD"",
" + "\n" +
@" ""addressLine2"": ""Suite C"",
" + "\n" +
@" ""city"": ""Topeka"",
" + "\n" +
@" ""state"": ""KS"",
" + "\n" +
@" ""zipCode"": ""66610"",
" + "\n" +
@" ""countryCode"": ""840"",
" + "\n" +
@" ""nationality"": ""USA""
" + "\n" +
@" },
" + "\n" +
@" ""debtorContact"": {
" + "\n" +
@" ""primaryEmail"": ""n.sundar@netsys-inc.com"",
" + "\n" +
@" ""primaryPhone"": ""7850010001""
" + "\n" +
@" },
" + "\n" +
@" ""debtorAccount"": {
" + "\n" +
@" ""identification"": ""200401278247450"",
" + "\n" +
@" ""identificationType"": ""ACCOUNT_NUMBER"",
" + "\n" +
@" ""institution"": {
" + "\n" +
@" ""name"": ""FINWISE BANK"",
" + "\n" +
@" ""identification"": ""124303298"",
" + "\n" +
@" ""identificationType"": ""ABA""
" + "\n" +
@" }
" + "\n" +
@" }
" + "\n" +
@" },
" + "\n" +
@" ""api"": {
" + "\n" +
@" ""credential"": ""Basic amVnYW4uckBuZXR4ZC5jb206ZmE3NTg4NzYyMDUxNDRhM2FmZTRlMDJiNzIzOTM2M2E="",
" + "\n" +
@" ""signature"": ""{{signature}}"",
" + "\n" +
@" ""apiKey"": ""fa758876205144a3afe4e02b7239363a"",
" + "\n" +
@" ""keyId"": ""41199""
" + "\n" +
@" }
" + "\n" +
@" }
" + "\n" +
@"}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "{{URL}}/jsonrpc"
method := "GET"
payload := strings.NewReader(`{`+"
"+`
"method": "TransactionService.Transfermoney",`+"
"+`
"id": "1",`+"
"+`
"params": {`+"
"+`
"payload": {`+"
"+`
"transactionAmount": {`+"
"+`
"amount": "220",`+"
"+`
"currency": "USD"`+"
"+`
},`+"
"+`
"creditor": {`+"
"+`
"userType": "INDIVIDUAL",`+"
"+`
"identification": "89900200002",`+"
"+`
"identificationType": "SSN",`+"
"+`
"firstName": "TestUser",`+"
"+`
"middleName": "",`+"
"+`
"lastName": ""`+"
"+`
},`+"
"+`
"creditorAccount": {`+"
"+`
"identification": "200522479517839",`+"
"+`
"identificationType": "ACCOUNT_NUMBER",`+"
"+`
"identificationType2": "CHECKING",`+"
"+`
"institution": {`+"
"+`
"name": "THE BANK OF NEW YORK MELLON",`+"
"+`
"identification": "101110802",`+"
"+`
"identificationType": "ABA"`+"
"+`
}`+"
"+`
},`+"
"+`
"debtorPostalAddress": {`+"
"+`
"addressType": "HOUSE",`+"
"+`
"addressLine1": "3745 SW anamaker RD",`+"
"+`
"addressLine2": "Suite C",`+"
"+`
"city": "Topeka",`+"
"+`
"state": "KS",`+"
"+`
"zipCode": "66610",`+"
"+`
"countryCode": "840",`+"
"+`
"nationality": "USA"`+"
"+`
},`+"
"+`
"debtorContact": {`+"
"+`
"primaryEmail": "n.sundar@netsys-inc.com",`+"
"+`
"primaryPhone": "7850010001"`+"
"+`
},`+"
"+`
"debtorAccount": {`+"
"+`
"identification": "200401278247450",`+"
"+`
"identificationType": "ACCOUNT_NUMBER",`+"
"+`
"institution": {`+"
"+`
"name": "FINWISE BANK",`+"
"+`
"identification": "124303298",`+"
"+`
"identificationType": "ABA"`+"
"+`
}`+"
"+`
}`+"
"+`
},`+"
"+`
"api": {`+"
"+`
"credential": "Basic amVnYW4uckBuZXR4ZC5jb206ZmE3NTg4NzYyMDUxNDRhM2FmZTRlMDJiNzIzOTM2M2E=",`+"
"+`
"signature": "{{signature}}",`+"
"+`
"apiKey": "fa758876205144a3afe4e02b7239363a",`+"
"+`
"keyId": "41199"`+"
"+`
}`+"
"+`
}`+"
"+`
}`)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/json")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
var https = require('follow-redirects').https;
var fs = require('fs');
var options = {
'method': 'GET',
'hostname': '{{URL}}',
'path': '/jsonrpc',
'headers': {
'Content-Type': 'application/json'
},
'maxRedirects': 20
};
var req = https.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function (chunk) {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
res.on("error", function (error) {
console.error(error);
});
});
var postData = JSON.stringify({
"method": "TransactionService.Transfermoney",
"id": "1",
"params": {
"payload": {
"transactionAmount": {
"amount": "220",
"currency": "USD"
},
"creditor": {
"userType": "INDIVIDUAL",
"identification": "89900200002",
"identificationType": "SSN",
"firstName": "TestUser",
"middleName": "",
"lastName": ""
},
"creditorAccount": {
"identification": "200522479517839",
"identificationType": "ACCOUNT_NUMBER",
"identificationType2": "CHECKING",
"institution": {
"name": "THE BANK OF NEW YORK MELLON",
"identification": "101110802",
"identificationType": "ABA"
}
},
"debtorPostalAddress": {
"addressType": "HOUSE",
"addressLine1": "3745 SW anamaker RD",
"addressLine2": "Suite C",
"city": "Topeka",
"state": "KS",
"zipCode": "66610",
"countryCode": "840",
"nationality": "USA"
},
"debtorContact": {
"primaryEmail": "n.sundar@netsys-inc.com",
"primaryPhone": "7850010001"
},
"debtorAccount": {
"identification": "200401278247450",
"identificationType": "ACCOUNT_NUMBER",
"institution": {
"name": "FINWISE BANK",
"identification": "124303298",
"identificationType": "ABA"
}
}
},
"api": {
"credential": "Basic amVnYW4uckBuZXR4ZC5jb206ZmE3NTg4NzYyMDUxNDRhM2FmZTRlMDJiNzIzOTM2M2E=",
"signature": "{{signature}}",
"apiKey": "fa758876205144a3afe4e02b7239363a",
"keyId": "41199"
}
}
});
req.write(postData);
req.end();
Request Body
{
"method": "TransactionService.Transfermoney",
"id": "1",
"params": {
"payload": {
"transactionAmount": {
"amount": "220",
"currency": "USD"
},
"creditor": {
"userType": "INDIVIDUAL",
"identification": "89900200002",
"identificationType": "SSN",
"firstName": "TestUser",
"middleName": "",
"lastName": ""
},
"creditorAccount": {
"identification": "200522479517839",
"identificationType": "ACCOUNT_NUMBER",
"identificationType2": "CHECKING",
"institution": {
"name": "THE BANK OF NEW YORK MELLON",
"identification": "101110802",
"identificationType": "ABA"
}
},
"debtorPostalAddress": {
"addressType": "HOUSE",
"addressLine1": "3745 SW anamaker RD",
"addressLine2": "Suite C",
"city": "Topeka",
"state": "KS",
"zipCode": "66610",
"countryCode": "840",
"nationality": "USA"
},
"debtorContact": {
"primaryEmail": "n.sundar@netsys-inc.com",
"primaryPhone": "7850010001"
},
"debtorAccount": {
"identification": "200401278247450",
"identificationType": "ACCOUNT_NUMBER",
"institution": {
"name": "FINWISE BANK",
"identification": "124303298",
"identificationType": "ABA"
}
}
},
"api": {
"credential": "Basic amVnYW4uckBuZXR4ZC5jb206ZmE3NTg4NzYyMDUxNDRhM2FmZTRlMDJiNzIzOTM2M2E=",
"signature": "{{signature}}",
"apiKey": "fa758876205144a3afe4e02b7239363a",
"keyId": "41199"
}
}
}
Response: 200
Response Parameters
Parameter | Description |
---|---|
id Mandatory | String Unique response id Example: " 1" |
result Mandatory | Object |
status Mandatory | String Status of the transaction Example: " COMPLETED" Possible values: " COMPLETED", "FAILED" |
referenceID Mandatory | String Unique reference id of the transaction Example: " b3d721e8f36a40b58e3caf3509e9508c" |
supportedChannel Mandatory | String Channel through which transaction is processed Example: " TCH" Possible values: "TCH", "FEDNOW", "ACH", "WIRE" |
transactionType Mandatory | String Type of transaction Example: " RTP_OUT" Possible values: "RTP_OUT", "CCT_OUT", "ACH_OUT", "WIRE_OUT" |
jsonrpc Mandatory | String RPC Version Example: " 2.0" |
Response Body
{
"id": "1",
"result": {
"status": "COMPLETED",
"referenceID": "b3d721e8f36a40b58e3caf3509e9508c",
"supportedChannel": "TCH",
"transactionType": "RTP_OUT"
},
"jsonrpc": "2.0"
}